운영체제 File System
용어정리
sector
: FileSystem에서 R/W 기본단위
in HDD, 디스크 원판은 트랙들로 구성
트랙은 섹터들로 구성
block
: ∑섹터, 저장공간 allocation의 기본단위
partition
: 디스크를 논리적으로 구분한 것. parition마다 다른 FS를 사용할 수 있다.
File System 추상화
- 디스크를 block sequence로 생각
- R/W(접근)은 sector 단위로
File allocation 메소드
== [ File → blocks ]의 allocation
: 새 파일이 생성 → allocation 상황
Contiguous allocation
: 순차적 할당
장점 - R/W시 디스크에서 순차적으로 접근 ⇒ 빠름
단점
- file 길이는 가변적이다
- file 길이가 늘어날 때, 여윳공간이 없다
- file 길이가 줄어들 때, 할당한 block을 안쓰게 되면 공간낭비
- External Fragmentation(공간낭비)
Chained allocation
: linked list 방법 사용(block이 다음 block 포인터 소유)
장점: 공간효율(External Fragmentation X, 가변적인 상황 대처가능)
단점
R/W시 순차적 할당이 아니다보니 상대적으로 느림
⇒ 디스크가 물리적 접근을 하다보니 순차적 할당이 아니면 트랙을 옮기거나 해야할 수 있음Random access시 중간에 위치한 block에만 접근하고 싶어도 head부터 FAT chain을 따라가서 접근해야 함 → 파일 크기가 클 때, 불필요한 오버헤드가 커짐
Meta Data(block 포인터)와 File Data가 한 곳에 저장 ⇒ 불안정
⇒ 한 block error 발생시 이후 다른 block도 접근하지 못함
FAT(File Allocation Table)
: (#block,#next) 정보를 저장한 테이블 in 메모리 ⇒ File Data와 Meta Data 분리
: FAT ∈ linked list allocation
FAT 파일 시스템에서 File 위치 찾는법
- Directory Entry
- (File Name: First Address) 정보 → block 접근
- FAT block 이동
- (#block,#next) 정보 → next block 접근
…
장점 - Meta Data와 File Data 분리로 안정성 확보
단점 - 메모리에 적재하다 보니 디스크의 용량이 아주 크면 메모리 부하↑
Indexed allocation
: 인덱스 block을 사용 ⇒ 메모리 적재가 아닌 디스크 적재이므로 메모리 제약↓
장점 - 메모리 제약↓, Random access 용이
단점 - 파일이 커서 인덱스 block 안에 모든 index를 못 담을 때..
⇒ indirect block이용 == 주소만을 저장한 block 주소를 우회해서 접근하면 된다
i-node(UNIX)
: Meta Data
: inode ≈ Indexed allocation
inode 구성
[ File Attributes, block0 주소, block1 주소, … , 포인터들을 담은 block 주소 ]
포인터들을 담은 block = indirect indexing
[ block10 주소, block11 주소, … ]
UNIX 파일 시스템에서 File 위치 찾는법
- Directory Entry
- (FileName : inode)정보 → inode Table(in HDD/SSD) 접근
- (inode → Data Blocks index)정보 → block 접근
* filename은 오직 디렉토리 엔트리 안에서만 쓰인다는 점..
장점 - 큰 파일도 커버 가능하다(by indirect block indexing → Extend Tree화)